Data berbentuk time series bisa dianalisa dengan berbagai macam cara. Salah satu analisa yang sering digunakan di dunia real adalah time series forecast modelling.
Apakah bisa kita membuat model time series untuk melakukan forecast data harga gula?
Data yang digunakan diambil dari situs isosugar.org. Data yang tersedia adalah data harga gula harian sejak dari Januari 2017 hingga Januari 2020.
Data diambil dengan cara web scrap.
Kita hanya akan membuat model berdasarkan data Januari 2017 hingga Desember 2019 sedangkan data Januari 2020 akan digunakan untuk validasi model forecast.
NADari data harian yang ada, ternyata pada saat hari libur datanya kosong (NA). Data kosong ini akan diisi harga pada hari sebelumnya (misal: closing harga Jumat atau kondisi lainnya).
Salah satu syarat agar kita bisa membangun model forecast dari data time series adalah:
Data yang digunakan harus stationary.
Bagaimana cara mengeceknya?
##
## Augmented Dickey-Fuller Test
##
## data: ts
## Dickey-Fuller = -2.3841, Lag order = 10, p-value = 0.4157
## alternative hypothesis: stationary
## [1] "Tidak stationary"
Ternyata datanya tidak stasioner sehingga perlu ada transformasi agar menjadi stasioner. Caranya adalah dengan membuat data time series baru dengan membuat selisih harga dengan lag = n hari.
Bagaimana mencari nilai
n?
## [1] 1
Sehingga didapat lag = 1 hari.
new_time_series = current_time_series[i+1] - current_time_series[i]
Bagaimana hasil transformasinya?
Mari kita cek apakah data hasil transformasinya stasioner atau belum!
##
## Augmented Dickey-Fuller Test
##
## data: ts_transformed
## Dickey-Fuller = -9.7713, Lag order = 10, p-value = 0.01
## alternative hypothesis: stationary
## [1] "stationary"
Ternyata hasilnya stasioner. Berarti kita akan membuat model berdasarkan data hasil transformasi ini.
Kita akan membuat model untuk forecast harga gula. Agar bisa melakukan cross validation, data akan kita pecah menjadi dua, yakni:
train dataset, yakni berisi data selisih harga gula 2017 - 2019.test dataset, yakni data harga gula pada Januari 2020 agar kita bisa menilai performance dari model yang kita buat.Kita akan membuat beberapa model time series, model yang terbaik akan dipilih berdasarkan validasi dengan test dataset.
## ME RMSE MAE MPE MAPE MASE
## Training set -0.005352082 0.1431542 0.1071448 NaN Inf 0.5904279
## Test set 0.046530374 0.1853718 0.1584322 NaN Inf 0.8730503
## ACF1 Theil's U
## Training set -0.001491404 NA
## Test set -0.145688638 NaN
## ME RMSE MAE MPE MAPE MASE
## Training set 0.000166282 0.1441229 0.1073335 NaN Inf 0.5914675
## Test set 0.051484652 0.1853130 0.1590786 NaN Inf 0.8766121
## ACF1 Theil's U
## Training set 0.01030034 NA
## Test set -0.13589106 NaN
## ME RMSE MAE MPE MAPE MASE
## Training set -0.005011514 0.1766329 0.1126118 NaN Inf 0.6205543
## Test set 0.046968499 0.1532125 0.1046278 NaN Inf 0.5765575
## ACF1 Theil's U
## Training set 0.001648822 NA
## Test set -0.139286886 NaN
## ME RMSE MAE MPE MAPE MASE
## Training set -0.0003915366 0.1944674 0.1265256 NaN Inf 0.6972266
## Test set 0.0378335008 0.2279168 0.1852144 NaN Inf 1.0206351
## ACF1 Theil's U
## Training set 0.0183258 NA
## Test set -0.2035556 NaN
## ME RMSE MAE MPE MAPE MASE
## Training set -9.149131e-05 0.2489506 0.1712351 NaN Inf 0.9436014
## Test set 1.468182e-01 0.2064968 0.1677273 Inf Inf 0.9242711
## ACF1 Theil's U
## Training set -0.4749039 NA
## Test set -0.1338053 NaN
## ME RMSE MAE MPE MAPE MASE
## Training set -0.003326488 0.1751151 0.1122461 NaN Inf 0.6185389
## Test set 0.041187355 0.1510163 0.1042150 -Inf Inf 0.5742830
## ACF1 Theil's U
## Training set 0.01730537 NA
## Test set -0.13264193 NaN
Jika hanya melihat dari MAE, model TBATS dan Auto ARIMA memberikan nilai terkecil untuk validasi terhadap test dataset.